Skip to content

Add Zen browser cookie import + real vendor icons in picker#16

Merged
gek0z merged 2 commits intomainfrom
feat/zen-browser-import
Apr 15, 2026
Merged

Add Zen browser cookie import + real vendor icons in picker#16
gek0z merged 2 commits intomainfrom
feat/zen-browser-import

Conversation

@gek0z
Copy link
Copy Markdown
Owner

@gek0z gek0z commented Apr 15, 2026

Summary

  • Closes Add support for Zen browser cookie import #12 — adds Zen to the importable-browser list. Zen is a Firefox fork with the same cookies.sqlite layout, so the existing Firefox reader handles it once the enum case, data root (~/Library/Application Support/zen/), and a generalised firefoxCookieStores(for:) are in place.
  • Swaps the SF Symbol globe for each browser's real logo. Icons ship under Assets.xcassets/Browsers/ (SVGs with preserves-vector-representation, plus a PNG for Helium).
  • Replaces Picker(.menu) with Menu: Picker(.menu) flattens to NSPopUpButton and ignores SwiftUI frame on vector assets, so SVGs rendered at their native viewBox size. Menu with a SwiftUI closed-state label + a pre-sized NSImage helper (for NSMenu rows) keeps both at 16×16.

Test plan

  • xcodebuild -scheme YouMenuTube build clean
  • With Zen installed & signed in: picker offers Zen → import succeeds → Subscriptions/Playlists populate
  • With Zen uninstalled: picker hides Zen
  • Import picker shows correct brand icon for each detected browser at a sane size (closed state + dropdown rows)
  • Firefox import still works (didn't regress the generalised firefoxCookieStores)

Zen is a Firefox fork that ships the same plain `cookies.sqlite` layout,
so the existing Firefox reader handles it — all this needed was the
enum case, the `~/Library/Application Support/zen/` data root, and
generalising `firefoxCookieStores` to take a browser parameter.

Also swaps the SF Symbol globe in the import picker for each browser's
real logo, bundled under `Assets.xcassets/Browsers/`. `Picker(.menu)`
flattens to NSPopUpButton and ignores SwiftUI frame modifiers on
vector assets, so the closed-state was rendering SVGs at their native
viewBox size. Switched to `Menu` with a SwiftUI label and a pre-sized
`NSImage` helper for both closed-state and NSMenu rows.

Closes #12
@gek0z gek0z added the run-ci Run the CI workflow on this PR label Apr 15, 2026
The repository ruleset requires a status check named `ci`, but the
workflow's job published `Build & Test (macOS 15)`, so the required
check never reported and PRs stayed in "waiting on status" forever.
Rename the job so its check-run name matches the rule.
@gek0z gek0z merged commit 469fe5a into main Apr 15, 2026
1 check passed
@gek0z gek0z deleted the feat/zen-browser-import branch April 15, 2026 09:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

run-ci Run the CI workflow on this PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add support for Zen browser cookie import

1 participant